home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
NetNews Offline 1
/
NetNews Offline Volume 1.iso
/
news
/
fido
/
ger
/
amiprog
/
59
< prev
next >
Wrap
Internet Message Format
|
1996-03-16
|
3KB
From: Andreas_Kleinert@p10.f435.n2457.z2.fido.sub.org (Andreas Kleinert)
Organization: COBOL Error #7. Computer is still ON.
Path: f435.n2457.z2.fidonet.org!not-for-mail
Newsgroups: fido.ger.amiprog
Subject: Re: prioritaet (oder so)
Message-ID: <MSGID_2=3A2457=2F435.10=40FidoNet_3032567d@fidonet.org>
References: <37492458@p3.traveller.fido.de>
Date: Wed, 16 Aug 1995 14:47:17 +0200
Hallo Peter,
In einer Nachricht vom 09 Aug 95 schrieb Peter Stegemann an mich:
PS> Die Zeit die der Task mit Warten verplempert, muss man auch zur
PS> Rechenzeit zaehlen, schlieslich ist es auch verbrauchte Zeit, waehrend
PS> der andere Tasks nicht rechnen koennen.
Richtig.
PS> Das Feststellen, welcher Task wie lange dran war, ist der grosse
PS> Kniff... meine huebschen Theorien finden nur raus, wieviel Rechenzeit
PS> verbraucht wurde... Das koennen wir ja noch ausknobeln ;-)
Vielleicht reicht das doch schon.
Ich fass' es nochmal alles zusammen bzw. mach' ein paar weitere Vorschlaege:
Ablauf: - Start eines Basistasks mit Prioeriatet 0
- dieser startet einen Speedtest-Task mit Prioritaet 128,
der eine bestimmte Anzahl Schleifendurchlaeufe mit
einer einfachen Operation durchlaeuft.
- unser Basistask wartet mit Wait() auf eine Nachricht
des Speed-Tasks, in der dieser vor seiner Beendigung
mitteilt, wie lange er gebraucht hat (Sekunden)
- danach startet der Basistasks einen Runtimespeed-Task
mit Prioritaet -21 (vielleicht besser als -128),
der die gleiche Schleife durchlaeuft und vor und nach
jedem Durchlauf die Zeit (innerhalb Forbid()/Permit())
misst und diese Zeit an unseren Basis-Task schickt
- der Basis-Task wartet auf die Nachrichten des RTS-Tasks
und wertet diese bei jedem Erhalt dann grafisch aus:
Braucht dieser z.B. zehnmal solange wie der Referenztask
(der angenommenerweise wohl 100% aller fuer Tasks zur
Verfuegung stehenden Rechenzeit erhalten) hat, stand
ihm nur ein Zehntel der CPU-Kapazitaet zur Verfuegung,
d.h. es waren nur 10% frei.
Der Nachteil dieser Loesung - die aehnlich schon ein paarmal vorge-
schlagen wurde - ist, dass a) nur Taskzeiten einfliessen, also
z.B. keine Interrupts oder SuperVisorMode-Aktionen und b) die GUI-
Darstellung selbst Rechenzeit benoetigt. Desweiteren haengt c)
die Aktualierungsgeschwindigkeit der Anzeige natuerlich direkt mit
der freien Rechenzeit zusammen (beim abrupten Wechsel von 0 auf 20%
freie Rechenzeit werden eventuell die 0% gar nicht lange angezeigt,
sondern die vorherige Anzeige bleibt stehen und wir sind dann sofort
auf 20% Prozent - z.T. nur zu verhindern durch eine laengere Test-
schleife, was aber dann die Aktualitaet negativ beeinflusst).
Viel mehr ist aber wohl ohne Hardware-Messungen nicht zu machen
(besonders nicht unter einem MT-OS).
Bis dann, Andreas Kleinert (2:2457/435.10) // Only Amiga makes it
EMail: Andreas_Kleinert@superview.ftn.sub.org \X/ possible (since '88)
* SuperView * SuperPlay * GameObjectDesign (G.O.D.) * and more *